/*
2021-6-28
https://www.acwing.com/problem/content/1078/
*/

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
typedef pair<int,int> PII;
const int N=1010,M=N*N;

PII q[M];
PII pre[N][N];
int n;
int g[N][N];

void bfs(int sx,int sy)
{
    int dx[]={0,0,-1,1};
    int dy[]={1,-1,0,0};
    
    memset(pre,-1,sizeof pre);
    int hh=0,tt=0;
    q[0]={sx,sy};
    pre[sx][sy]={0,0};
    
    while(hh<=tt)
    {
        PII temp=q[hh++];
        for(int i=0;i<4;i++)
        {
            int a=temp.first+dx[i],b=temp.second+dy[i];
            if(a<0 || a>n-1 || b<0 || b>n-1) continue;
            if(pre[a][b].first!=-1) continue;
            if(g[a][b]) continue;
            
            q[++tt]={a,b};
            pre[a][b]=temp;
            
        }
    }
    
}

int main()
{
    ios::sync_with_stdio(false);
    cout.tie(NULL);
    
    cin>>n;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            cin>>g[i][j];
    
    bfs(n-1,n-1);
    
    PII end={0,0};
    
    while(true)
    {
        printf("%d %d\n",end.first,end.second);
        if(end.first==n-1 && end.second==n-1) break;
        end=pre[end.first][end.second];
    }
    
    return 0;
}
